<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数的增强</title>
</head>
<body>

</body>
<script>
// 默认参数
function fn1(name='tom', age=17) {
    console.log(name + ', ' + age);
}

// rest参数 ...扩展运算符

// 箭头函数
// es6 增加的简写函数的语法方式
// 只能简写函数表达式（匿名函数）
function fn(a,b){// 普通的函数，声明式函数 ， 不能改写成箭头函数
    console.log('hello',a,b);
}

fn2 = (a,b)=>{//箭头函数
    console.log('hello',a,b);
}
fn2(1,2)

let name ='shane';
let age = 12;
const person = {
    name,
    age,
    run:()=>{

    }
}
// 箭头函数的特性
// 1.如果箭头函数的参数只有一个，那么括号可以省略
// 2. 默认参数 ,括号不可以省略
// 3. 在箭头函数中， 如果只有一行代码且为return 也就是回调函数，则大括号也可以省略
fn4 = a => a

fn4(3)

// this 指代的是window对象
console.log(this);

// 在匿名函数，function里面this 指向函数的调用者
// 箭头函数中this指向的函数的声明处，通常指的是window对象
let obj = {
    name:'Shane',
    run(){
        this.name = "kitty"
        console.log(this);
    }
}
obj.run()
console.log(obj);

</script>
</html>